home *** CD-ROM | disk | FTP | other *** search
- /* array.c - subroutines to dynamically allocate space for a 2D array */
-
- #include <stdio.h>
- #include "contour.h"
-
- /*
- * assign array[i][j]
- * i_size, j_size are the maximum dimensions of the 2D array.
- */
- data *create_data_array(isize,jsize)
- int isize, jsize;
- {
- char *malloc();
- data *newptr;
- unsigned int arr_size;
-
- /* figure out total no of elements */
- arr_size = (unsigned)(isize*jsize)*sizeof(data);
-
- /* allocate space using malloc(), and return a pointer */
- if ( (newptr = (data *)malloc(arr_size)) == NULL) {
- fprintf(stderr,"Out of memory\n");
- exit(1);
- }
-
- /* return the pointer */
- return(newptr);
- }
-
- assign_data_array_value(arrptr,i,j,isize,jsize,val)
- data *arrptr,*val;
- int i,j,isize,jsize;
- {
- if (i>=isize || j>=jsize) {
- fprintf(stderr,"Element [%d][%d] is out of bounds!\n",i,j);
- exit(1);
- }
- *(arrptr + i*jsize + j) = *val;
- }
-
- data get_data_array_value(arrptr,i,j,isize,jsize)
- data *arrptr;
- int i,j,isize,jsize;
- {
- data val;
- if (i>=isize || j>=jsize) {
- fprintf(stderr,"Element [%d][%d] is out of bounds!\n",i,j);
- exit(1);
- }
- val = *(arrptr + i*jsize + j);
- return(val);
- }
-
- void free_data_array(arrptr)
- data *arrptr;
- {
- /* free the array */
- free((char *)arrptr);
- }
-